A small dialect of
PL/I used for compiler writing from
Stanford, 1967-69.
XPL has
one-dimensional
arrays. I/O is achieved with character
pseudo-variable INPUT and OUTPUT, e.g.
OUTPUT = 'This is a line';
It has inline
machine code. "Programmers are given all the
rope they ask for. Novices tend to hang themselves fairly
frequently."
XPL has been implemented on
IBM 360, {Univac
1100},
ICL System 4,
CDC 6000 and
Cyber series, {XDS
Sigma-5} and
Sigma-7 and
DEC PDP-10.
An optimising
XPL compiler (version 1) by Robin Vowels
<
robin_vowels@rmit.edu.au> is a standard implementation of
XPL
and is based on McKeeman, Horning, and Wortman's improved
XCOM (which employs hashed symbol table generation). It
includes the extra built-in function COREHALFWORD.
The following areas have been optimised: procedures calls when
the argument and corresponding parameter are of the same type,
and when the argument is a constant; constant subscripts; use
of CORELHALFWORD and COREWORD; string constants of length one;
iterative DO statements by transferring code to the end of the
loop.
String constants of length one do not require a descriptor,
hence more descriptors are available for string variables.
Comparison operations are treated as commutative, and an
improved Commute algorithm is used. Halfword instructions are
generated for BIT(16) variables.
These areas have been improved or re-written: calls on OUTPUT,
catenation, integer-to-string conversion, multiply, divide,
and MOD. An emitter for SS-type instructions has been added.
The compiler achieves an 11% reduction in object code
compiling itself, an 11% increase in compilation rate, a 55%
increase in compilation speed when the $E toggle is set.
Special treatment for catenating a string to an integer
substantially decreases consumption of the free string area,
and decreases string moves. The latter improvement is most
noticeable on small core machines.
Core requirements: less than the improved XCOM on which it is
based (approx. 98000 bytes). Symbol table size is 468.
Ported to
IBM System 370. The compiler is written in
XPL.
The code generators are machine-specific.
[
"A Compiler Generator," W.M. McKeeman et al, P-H 1970].
[
JCC, AFIPS 1968].
(1993-08-07)